package problem.year2022.Month08;
/**
 * @author LiangMu
 * @version \$Id: Main.java, v 0.1 2022年08月27日 3:15 下午 LiangMu Exp $$
 */
class Main {
    /**
     * zhangzhenhua z00374333对所有人说 (3:14 下午)
     给定一个整数数组，数组中有一个数出现了一次，其他数出现了两次，请找出只出现了一次的数。
     数据范围：数组中元素个数满足 1≤n≤100000  ，数组中的元素大小满足∣val∣≤10^9
     示例1 输入：[1]
     返回值：1

     示例2 输入：[1,2,2]
     返回值：1

     示例3 输入：[2,3,2,1,1]
     返回值：3

     示例4 输入：[-1,2,-1]
     返回值：2
     */

    static void main(String[] args) {
        def ints1 = [1]
        println fun(ints1)
        def ints2 = [1, 2, 2]
        println fun(ints2)
        def ints3 = [2, 3, 2, 1, 1]
        println fun(ints3)
        def ints4 = [-1, 2, -1]
        println fun(ints4)
    }

    static def fun(List<Integer> ints) {
        Map<Integer, Integer> map = new HashMap<>(ints.size());
        ints.forEach({
            if (map.containsKey(it)) {
                map.put(it, map.get(it) + 1)
            } else {
                map.put(it, 1)
            }
        })
        def entry = map.find { it.value == 1 }
        return entry.key
    }


}
